<?php
/**
 * 
 * User Id Interface
 * Interface for Identity Authority
 * A class used in Verifying/Authenticating an ID
 * 
 * @author Alton Crossley <crossleyframework@nogahidebootstrap.com>
 * @package Crossley Framework
 *  
 * @copyright Copyright (c) 2003-2009, Nogaide BootStrap INC. All rights reserved.
 * @license BSD http://opensource.org/licenses/bsd-license.php
 * @version $Id:$
 * 
 */
interface X_User_Id_Authority_Interface
{
    /**
     * this method knows how to login the user (identify/authenticate)
     * ex. forward to a login page, access GPC data directly... etc
     * 
     * @see X_User_Interface
     * @return X_User
     */
    public function identify();
    /**
     * verify a User Objects credentials
     * 
     * @param X_User_Interface $oUser
     * @return bool
     */
    public function verifyUser(X_User_Interface $oUser);
    /**
     * verify a User Objects credentials from the session
     * set the on the user object if the user object does not reflect the session
     * 
     * @param X_User_Interface $oUser
     * @return bool
     */
    public function verifyUserSession(X_User_Interface $oUser);
    /**
     * used to verify a user identity
     * 
     * @return bool
     */
    public function varifyUid($xId);
    /**
     * confirm the current identity
     * return false if no id is set 
     *
     * @return bool
     */
    public function verifyToken($sToken);
    /**
     * used to check U/P combinaitons
     *
     * @param string $sUsername
     * @param string $sPassword
     * @return Uid
     */
    public function verifyTokenPair($sUsername, $sPassword);
    /**
     * retrun the user data from a Uid
     * 
     * 
     * @see X_User_Id_Data
     *
     * @return X_User_Id_Data
     */
    public function getUserIdData($sId);
	/**
	 * set the id parameters on a
	 * @param $oUser
	 */
	public function setIdentity(X_User_Interface $oUser);
}